// 公司里面axios必然走的是封装
import axios from "axios";
import {setnullString , GetCookie} from "../config/config";
// axios用来调接口
// axios和ajax的区别 axios是ajax的promise的封装
// axios自带了拦截器 对于数据请求前的拦截 和数据返回后的拦截
// request数据请求前进行拦截
axios.interceptors.request.use(config=>{
    // 
    console.log(config)
    // TOKEN(令牌)是判断用户有没有登录的标识
    // 如果用户已经登录成功 我们需要将TOKEN令牌放进请求头部 至于放哪问后端
    if(GetCookie("token")){
        // 用户已经登录
        config.headers["X-Access-Token"] = GetCookie("token");
    }
    // 放行 return
    return config
})//request拦截器 拦截数据发送前

// response 拦截器对于数据请求后进行拦截
axios.interceptors.response.use(res=>{

    // res.data 网络的预览数据 res.data才是我们日常使用的数据
    // res后端返回回来的整体数据

    if(res.status != 200){
        // 调接口失败 404 500页面
    }else{
        // 递归防null 后端所有返回的数据又可能直接用数据库里面的null字段返回 
        // 这会导致前端直接取值时候白屏 后端的数据不可能都是一层对象也有可能是
        // 多层对象或者数据 我们不可控多少级数据的情况下 只能使用递归将所有的null变成{}

        return setnullString(res.data)
    }
})
// 抛出axios
export default axios